package com.ming_za.od_updater_sdk.server_api;

import com.ming_za.od_updater_sdk.IUpdater;
import com.ming_za.od_updater_sdk.server_api.result_obj.data.ResData;
import com.ming_za.od_updater_sdk.obj.ReqValue;
import com.ming_za.od_updater_sdk.obj.Res;
import com.ming_za.od_updater_sdk.server_api.result_obj.data.ResFileInfo;

/**
 * 接入更新服务器的API程序接口
 */
public interface IUpdaterServer {

    /**
     * 获取并发下载数量
     * @return 并发下载数量
     */
    ReqValue<Integer> getConcurrencyCount(IUpdater odUpdater);

    /**
     * 获取资源文件
     * <p>此方法将产生阻塞，直到返回结果</p>
     * @param res 资源
     * @return 资源文件数据对象
     */
    ReqValue<ResFileInfo> getResFile(Res res,IUpdater odUpdater);

    /**
     * 获取版本的所有资源
     * @param version 版本号
     * @param labelId 标签id
     * @param unpublishKey 未发布密钥
     * @return 返回体数据
     */
    ReqValue<ResData[]> getVersionRes(int version, long labelId, int unpublishKey,IUpdater odUpdater);

    /**
     * 获取客户端版本到最新版之间的所有版本
     * @param nowVersion 当前版本
     * @return 返回体数据
     */
    ReqValue<Integer[]> getVersions(int nowVersion,int unpublishKey,IUpdater odUpdater);

    /**
     * 获取未发布版本
     * @param unpublishKey 未发布密钥
     * @param odUpdater 更新器实例
     * @return 没有则返回0
     */
    ReqValue<Integer> getUnpublishedVersion(int unpublishKey,IUpdater odUpdater);
}
